#ifndef PLAYER_H
#define PLAYER_H

#include <GameGlobals.h>

#include <map>

class World;
class BaseObject;
class PlayerInterface
{
	public:
		PlayerInterface(World& gameworld);
		~PlayerInterface();

		void Init();
		void Update(float dt = 0.016f);
		void Input(const bool* keys, float fps);
		void SetControlTarget(BaseObject* target);
		BaseObject* const GetControlTarget();

		//controls for commands
		void MoveForward();
		void TurnLeft();
		void TurnRight();
		void Slow();
		void Stop();

		//controls for when the player is not on a ship
		void Walk_MoveForward();
		void Walk_MoveBackward();
		void Walk_TurnLeft();
		void Walk_TurnRight();

	private:
		World& world;
		BaseObject* controlTarget;
		truth initialized;

		////////////////////////////////////
		//player object variables
		float moveSpeed;
		float turnSpeed;
		float walk_moveSpeed;
		float walk_turnSpeed;
		float slowSpeed;
		float MAX_walk_moveSpeed;
		float MAX_moveSpeed;
		float MAX_turnSpeed;

		std::map<unsigned char, void (*)(PlayerInterface&)>* currentControlSet;
		//void (*controlSet)(PlayerInterface&);
};


#endif